Network-based data processing often involves the use of computer systems organized in a client-server arrangement. In a typical client-server arrangement, network-based applications including programs, Java applets and ActiveX controls, for example, may be supplied to one or more client devices by a remote server device on a shared network.
The shared network may include an internal private network such as an Intranet or local area network (LAN), an external public network, such as the Internet, or a combination of the two. Within shared networks, clients and servers are often controlled and/or managed by different entities or organizations. For a variety of security reasons, the operator of a client system may not wish to send sensitive data across a non-secure network (i.e. that controlled by a different organization) to be processed by an application residing on a remote server. In many situations, the operator of the client device will prefer to execute the application locally such that sensitive data is not compromised.
Furthermore, even though network-based applications stored on a remote server may be executable by a local client, there is no guarantee that the network connection will not be lost or incur communication problems during application execution. Even if precautions are taken by one organization to ensure operational redundancy within a local network, there is no guarantee that external data communication links between the local network and the remote server will not fail or experience communication problems. If a user requires a mission-critical application but is unable to access the application due to external communication problems, user satisfaction will suffer.
Further yet, even if network connectivity could be guaranteed, the amount of application code that would be required to be downloaded to the client upon each execution request is formidable. For example, a full version of an application such as Microsoft Word®, can take hours to transmit over even the fastest network connections. If prior to every execution, the requested application had to be downloaded from a remote server, the required download time coupled with external communications delays may approach an intolerable level.
Lastly, suppliers of network-based applications may provide multiple versions of an application depending on the system upon which the application is to run. For example, a complete version of the application may be intended for systems having 32 or more Mbytes of memory and a more functionally limited version of the application may be intended for a system having less than 32 Mbytes of memory. Additionally, versions of an application may be designed to operate on specific hardware platforms (e.g., Pentium® II processor, Pentium® III processor, PowerPC® processor) utilizing, for example, a variety of instruction sets. It would be very difficult for an external organization maintaining a remote applications server to track more than a few static client configurations let alone the tens of thousands of configuration variations possible due to available hardware and/or software upgrades.
Therefore, what is needed is an improved technique for providing network-based applications.